import UIKit

//
@available(iOS 9.0, *)
extension QKC where AA :UIRegion {
	/** Create a new region that is the inverse of the current region.
     The inverse of the infiniteRegion is an empty region.
     Subclasses of UIRegion need to provide an implementation of inverseRegion.
     */
    open func inverse_qk_f() -> QKC<AA,YY,ZZ,UIRegion>{
		 self +^ self.value.inverse()
	}

	/** Create a new region that is the original region plus the supplied region
     */
    open func byUnion_qk_f(with region: UIRegion) -> QKC<AA,YY,ZZ,UIRegion>{
		 self +^ self.value.byUnion(with:region)
	}

	/** Create a new region that is the original region minus the supplied region
     */
    open func byDifference_qk_f(from region: UIRegion) -> QKC<AA,YY,ZZ,UIRegion>{
		 self +^ self.value.byDifference(from:region)
	}

	/** Create a new region that is the region covered by the original region and the supplied region
     */
    open func byIntersection_qk_f(with region: UIRegion) -> QKC<AA,YY,ZZ,UIRegion>{
		 self +^ self.value.byIntersection(with:region)
	}

	/** Test for containment
     */
    open func contains_qk_f(_ point: CGPoint) -> QKC<AA,YY,ZZ,Bool>{
		 self +^ self.value.contains(point)
	}

}

